The convergence of computers, voice communications, and the Internet has revolutionized the manner and speed by which people are able to communicate. People today have the capacity to communicate instantly using a variety of communication devices and methods. However, as the number of methods by which a person can communicate has increased, so has the possibility that a person may be communicating using one method when someone attempts to contact him or her with an alternate method. In such a situation, the person may be unavailable to receive communications. Generally, the terms “presence” or “presence awareness” refer to the concept of providing others with information about a user's ability or willingness to communicate.
In the prior art, the concept of using presence in communication systems is often applied in instant messaging (IM) systems. IM is an increasingly popular form of electronic communication that allows users of networked computers to communicate in real-time. In a typical IM system, an IM application is installed on the computer of each user. Users of the same IM service are distinguished from one another by user identifications (IDs). Contact lists (i.e., “buddy lists”) are also provided to allow users to save the user IDs of the people they most frequently communicate with.
An IM user initiates an IM session by selecting a user ID from his or her contact list and typing a message to the selected contact through a keyboard attached to the IM initiator's computer. The IM application transmits the IM to the IM application executing on the contacted user's (i.e., buddy's) computer. The IM application then displays the IM on the display device (also referred to as a “visual display”, “display”, or “monitor”) of the contacted user's computer. The contacted user may then either ignore the IM or respond to the IM by typing a message back to the IM initiator.
Most IM applications also provide information indicating whether a “buddy” in the user's contact list is available or unavailable to engage in an IM session. This presence information is provided to IM users in the form of presence status indicators or icons, which are typically shown next to the buddy's user ID in a user's contact list. Typical presence status indicators include: online, offline, busy (e.g., on the phone) or away from the computer (e.g., in a meeting). These presence status indicators are useful since, unlike traditional e-mail systems, an IM user need only check the presence status of the user to determine whether the other user is available for real-time messaging.
Many IM applications require an IM user to manually select from among a plurality of available presence status indicators in order to inform other IM users of their presence status. Other IM applications, such as the Microsoft UC client application, provide a limited capability of determining the presence status of a user automatically by tracking whether the user has interacted with his or her computer's keyboard or mouse during a predetermined time span (e.g., 15 minutes). This process allows the online/offline and present/away status to be determined without the user having to manually set his or her presence status preference. However, because the user may be present at the computer for an extended period of time without actually interacting with the computer's keyboard or mouse, monitoring and updating the presence status of the user using this approach is not very reliable.
Another shortcoming of prior art presence aware IM systems, and other presence aware real-time communication systems (e.g., voice over Internet protocol (VoIP), is that they do not generally determine the proximity of a user relative to the user's computer, other than for times when perhaps the user is interacting with the computer's keyboard or mouse. Systems that do attempt to determine proximity often rely on received signal strength indication (RSSI) between a radio and its base. However, the use of RSSI to determine proximity can be unreliable for a variety of reasons. For example, since RSSI does not require visual line of sight, it is unreliable for use in determining whether a user is capable of viewing a display screen. Though close in distance to the display screen, the user may be behind the display screen or on the other side of a wall from the display screen. Finally, prior art presence aware IM systems, and other real-time communication systems, do not provide a reliable means for determining that a user is viewing his or her display.
It would be desirable to have real-time communication methods and apparatuses for determining whether a user is viewing his or her computer monitor display, or in an appropriate position to easily view his or her display if desired. Furthermore, it would be desirable to have accurate proximity information in conjunction with the user's capacity to view his or her display. For example, it would be desirable to know how far the user is from his or her display so that the size of an IM or other text or video appearing on the display can be scaled appropriately. Furthermore, it would be desirable to identify and distinguish between different users, whereby the quantity of scaling and criterion for when scaling occurs is specific to each user.
Another area that is interested in user presence is security. Users forget to lock their screens, and may want them to auto lock when far away and unlock when close. Again RSSI as a proximity measure would be okay for locking but not okay for unlocking if the user is on the other side of a wall. Security sometimes depends on face recognition. A security application could perform pattern recognition on camera input whenever the user is facing the camera without having to tell the user to explicitly look into the camera if there was a means to sense when the user is facing it.
As a result, there is a need for improved methods and apparatuses for gathering, utilizing, and delivering presence information.